package com.jltx.xq.zeus.startup

import android.content.Context
import com.jltx.xq.zeus.startup.dispatcher.StartupDispatcher
import com.jltx.xq.zeus.startup.executor.StartupExecutor

/**
 * @author aidenquan
 *         Created by junlintianxia on 2022/07/14.
 */
interface Startup<T> : StartupDispatcher, StartupExecutor {
    /**
     * Contains all of the necessary operations to initialize the component.
     * and returns an instance of `T`
     * 给程序员写任务逻辑使用
     * @param [context]
     */
    fun create(context: Context): T?

    /**
     * Returns a list of the other [Startup] Class Name that the initializer depends on.
     * 本任务依赖哪些任务
     */
    fun dependenciesByName(): List<String>?

    /**
     * Returns size of depends on.
     */
    fun getDependenciesCount(): Int

}